SFINAE __bit_iterator such that it will only get instantiated with a container that has the nested type __storage_type. This prevents accidental instantiation such as in http://llvm.org/bugs/show_bug.cgi?id=12755. This fixes http://llvm.org/bugs/show_bug.cgi?id=12755. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@156308 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/bitset b/include/bitset index 6e12e5c..b3a5867 100644 --- a/include/bitset +++ b/include/bitset
@@ -148,9 +148,9 @@ public: typedef ptrdiff_t difference_type; typedef size_t size_type; + typedef size_type __storage_type; protected: typedef __bitset __self; - typedef size_type __storage_type; typedef __storage_type* __storage_pointer; typedef const __storage_type* __const_storage_pointer; static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT); @@ -406,9 +406,9 @@ public: typedef ptrdiff_t difference_type; typedef size_t size_type; + typedef size_type __storage_type; protected: typedef __bitset __self; - typedef size_type __storage_type; typedef __storage_type* __storage_pointer; typedef const __storage_type* __const_storage_pointer; static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT); @@ -549,9 +549,9 @@ public: typedef ptrdiff_t difference_type; typedef size_t size_type; + typedef size_type __storage_type; protected: typedef __bitset __self; - typedef size_type __storage_type; typedef __storage_type* __storage_pointer; typedef const __storage_type* __const_storage_pointer; static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);